<?php
class AdminUserController extends BController
{
	public function filters() {return array('rights');}
	
	public function actionIndex1()
	{
		$model=new User('search');
		$model->unsetAttributes();  // clear any default values
		
		// user is performing search or sort via ajax
		if(isset($_GET['ajax']) && $_GET['ajax']=='ajaxListView')
		{
			$criteria = new CDbCriteria;

			// he is search for something...
			if(isset($_POST['User'])) {
				$model->attributes=$_POST['User'];

				$join_date_from = Yii::app()->request->getParam('join_date_from', '');
				$join_date_to = Yii::app()->request->getParam('join_date_to', '');
				
				if($join_date_from !== '' && $join_date_to !== '')
					$criteria->addBetweenCondition('join_date',strtotime($join_date_from), strtotime($join_date_to));
			}
			
			$this->setEnvAjaxCall();
			$dataProvider = $model->search($criteria);
			$this->render('_index',array('dataProvider'=>$dataProvider));
		}
		else {
			$this->pageTitle = Yii::t('user','Danh sách thành viên');

			$dataProvider=$model->search();
			
			$this->render('index',array(
				'dataProvider'=>$dataProvider,
				'model'=>$model,
			));
		}
	}
	
	public function actionIndex()
	{
		$model=new User('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['User']))
			$model->attributes=$_GET['User'];
		$this->render('admin',array(
			'model'=>$model,
		));
	}

	/**
	 * Creates a new model.
	 * If creation is successful, the browser will be redirected to the 'admin' page.
	 */
	public function actionCreate()
	{
		$this->pageTitle = Yii::t('user','Thêm thành viên mới');
		
		$model=new CreateUserForm('create');
		$model->group_id = UserGroup::MEMBER;
		
	    if(isset($_POST['CreateUserForm']))
	    {
	        $model->attributes=$_POST['CreateUserForm'];
	        if($model->validate())
	        {
				$user = new User();
				$user->group_id = $model->group_id;
				$user->first_name = $model->first_name;
				$user->last_name = $model->last_name;
				$user->name = $model->name;
				$user->email = $model->email;
				$user->password = User::EncryptPassword($model->password);
				$user->join_date = time();
				
				if($user->save())
				{
					if($model->sendWelcomeEmail)
					{
						if(! $this->sendWelcomeEmail($model))
						{
							Yii::app()->user->setFlash('error',Yii::t('user','Cấu hình PHPMailer có sai sót, email chưa được gửi đến thành viên.'));
						}
					}
					Yii::app()->user->setFlash('success',Yii::t('user','Đã thêm thành viên mới.') . ' ' . CHtml::link(Yii::t('user','Thêm một thành viên khác?'), array('create')));
					$this->redirect(array('view','id'=>$user->id));
				}
	        }
	    }
	    $this->render('create',array('model'=>$model));
	}

	/**
	 * Update on May 27, 2012
	 *
	 * @var AR CreateUserForm model
	 **/
	private function sendWelcomeEmail($model)
	{
		$message = "Xin chao <strong>{$model->name}</strong>, <br /><br />
			Mot tai khoan thanh vien vua duoc tao ra cho ban tai trang web <strong>".Yii::app()->name."</strong><br />
			Day la thong tin dang nhap cua ban:<br />
			Ten dang nhap: {$model->email}<br />
			Mat khau: {$model->password}<br /><br />
			Luu y: Hay thay doi mat khau de dam bao su an toan cho tai khoan.<br />
			<a href='" . Yii::app()->controller->createAbsoluteUrl('/user/profile/changePassword') . "'>
			Nhan vao day de dang nhap va thay doi mat khau.
			</a>";
		
		$mail = NMailer::SetupSmtpMail();
		$mail->AddAddress($model->email, $model->name);
		$mail->Subject = Yii::t('user',"Tai khoan thanh vien duoc khoi tao");
		$mail->Body = $message;
		try {
			return $mail->Send();
		} catch(Exception $e)
		{
			return false;
		}
	}
	
	/**
	 * Displays a particular model.
	 * @param integer $id the ID of the model to be displayed
	 */
	public function actionView($id)
	{
		$model = $this->loadModel($id);
		$this->pageTitle = Yii::t('user','Thông tin thành viên ') . $model->name;		
		$this->render('view',array(
			'model'=>$model,
		));
	}

	/* AUTO function */
	public function actionAdminLogin($id)
	{
		$model = $this->loadModel($id);
		$identity = new UserIdentity($model->email,$model->password);
		$identity->adminLogin = true;

		// this session hold ID of current Admin, used to auto-relogin 
		// after this user logout
		Yii::app()->session['currentAdmin'] = Yii::app()->user->id;

		$identity->authenticate();
		Yii::app()->user->login($identity, 3600*1*1);
		Yii::app()->user->setFlash('notice',Yii::t('user','Bạn đang đăng nhập với tài khoản của thành viên <strong>{thanhvien}</strong>', array('{thanhvien}'=>$model->name)));
		$this->redirect(array('/user/profile'));
	}

	/* AJAX function */
	public function actionUpdateGroup($id)
	{
		$model = $this->loadModel($id);
		$groups = UserGroup::model()->findAll();

		if(isset($_POST['User']))
		{
			$model->group_id = $_POST['User']['group_id'];
			$model->group_ids = $_POST['User']['group_ids'];
			if(is_array($model->group_ids)) $model->group_ids = implode(',', $model->group_ids);
			$model->display_group_id = $_POST['User']['display_group_id'];

			$model->update(array('group_id', 'group_ids', 'display_group_id'));
			echo CJSON::encode(array('result'=>'success'));
			Yii::app()->end();
		}
		if(!is_array($model->group_ids)) $model->group_ids = explode(',', $model->group_ids);
		$this->renderPartial('_updateGroup', array('model'=>$model,'groups'=>$groups));
	}
	
	/* AJAX function */
	public function actionBasicInfo()
	{
		$this->renderPartial('_basicInfo');
	}

	/**
	 * Deletes a particular model.
	 * If deletion is successful, the browser will be redirected to the 'index' page.
	 * @param integer $id the ID of the model to be deleted
	 */
	public function actionDelete($id)
	{
		if(Yii::app()->request->isPostRequest)
		{
			$model = $this->loadModel($id);
			if(Yii::app()->user->id == $model->id)
			{
				Yii::app()->user->setFlash('error',Yii::t('user','Bạn không được tự xóa tài khoản.'));
				$this->redirect(array('view','id'=>$model->id));
			} else if($model->delete())
				Yii::app()->user->setFlash('success',Yii::t('user','Đã xóa tài khoản thành viên <strong>{thanhvien}</strong>.', array('{thanhvien}'=>$model->name)));				
		} 
		else 		
			Yii::app()->user->setFlash('error',Yii::t('user','Thao tác không hợp lệ, vui lòng không lặp lại.'));
			
		$this->redirect(array('index'));
	}

	public function actionMultiDelete()
	{
		if(Yii::app()->request->isPostRequest)
		{
			if(isset($_POST['multiselect']))
			{
				$successIds = array();
				$errorIds = array();

				foreach ($_POST['multiselect'] as $id) {
					$model = $this->loadModel($id);
					if(Yii::app()->user->id == $model->id)
					{
						array_push($errorIds, $id);
					}
					else
					{
						if($model->delete())
							array_push($successIds, $id);
						else
							array_push($errorIds, $id);
					}
				}
				if(count($successIds)>0)
					Yii::app()->user->setFlash('success',Yii::t('user','Đã xóa: ') . implode(', ', $successIds));
				if(count($errorIds)>0)
					Yii::app()->user->setFlash('error',Yii::t('user','Không thể xóa: ') . implode(', ', $errorIds));
			}
			else
			{
				Yii::app()->user->setFlash('error',Yii::t('user','Chưa chọn thành viên!'));
			}
		} 
		else 		
			Yii::app()->user->setFlash('error',Yii::t('user','Thao tác không hợp lệ, vui lòng không lặp lại.'));
			
		$this->redirect(isset($_GET['returnUrl'])?$_GET['returnUrl']:array('index'));
	}

	/**
	 * Returns the data model based on the primary key given in the GET variable.
	 * If the data model is not found, an HTTP exception will be raised.
	 * @param integer the ID of the model to be loaded
	 */
	public function loadModel($id)
	{
		$model=User::model()->findByPk((int)$id);
		if($model===null) 
			throw new CHttpException(404,Yii::t('common',"Dữ liệu được yêu cầu không đúng hoặc đã bị xóa."));	
		return $model;
	}
}

